/*================================================================
*   Copyright (C) 2020 belonging to YangZhengQing. All rights reserved.
*   
*   文件名称：msg_send.c
*   创 建 者：YangZhengQing
*   创建日期：2020年03月11日
*   描    述：
*
*================================================================*/


//#include "msg_send.h"

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/msg.h>

#define FTOK_PATH "../apue"
#define PROJ_ID 10

//定义消息体
typedef struct
{
	long	msg_type;//必须以long开始，接收函数根据它确定消息类型
	char    msg_val[512];
}msg_body_t;

int main(int argc, char **argv)
{

	key_t				key = -1;
	int					msg_id = -1;
	msg_body_t			msg;

	key = ftok(FTOK_PATH, PROJ_ID);//生成身份证
	if(key < 0)
	{
		printf("ftok error:%s\n",strerror(errno));
		exit(0);
	}

	msg_id = msgget(key, IPC_CREAT|0666);//创建消息队列
	if(msg_id < 0)
	{
		printf("msgget error:%s\n",strerror(errno));
		exit(0);
	}

	//初始化消息体
	msg.msg_type = (int)key;
	strcpy(msg.msg_val ,"hi,boy,good afternoon!");

	//发送消息
	
	if(msgsnd(msg_id, &msg, sizeof(msg.msg_val), IPC_NOWAIT) < 0)
	{
		printf("msgsnd error:%s\n",strerror(errno));
		exit(0);
	}

//	msgctl(msg_id, IPC_RMID, NULL);//销毁消息队列

	return 0;


}
